def process_text_file(file_path, output_file=None):
    """
    读取txt文件，对每行字符串进行去重

    Args:
        file_path (str): 输入文件路径
        output_file (str, optional): 输出文件路径，如果不指定则只打印结果

    Returns:
        set: 去重后的字符串集合
    """
    unique_lines = set()

    try:
        # 读取文件
        with open(file_path, 'r', encoding='utf-8') as f:
            for line in f:
                # 去除行末的换行符和空格
                cleaned_line = line.strip()
                # 只添加非空行
                if cleaned_line:
                    unique_lines.add(cleaned_line)

        print(f"原始行数: {sum(1 for line in open(file_path, 'r', encoding='utf-8'))}")
        print(f"去重后行数: {len(unique_lines)}")
        print("\n去重后的内容:")
        print("-" * 50)

        # 将集合转换为排序列表以便更好地显示
        sorted_lines = sorted(unique_lines)
        for i, line in enumerate(sorted_lines, 1):
            print(f"{i:3d}: {line}")

        # 如果指定了输出文件，则写入文件
        if output_file:
            with open(output_file, 'w', encoding='utf-8') as f:
                for line in sorted_lines:
                    f.write(line + '\n')
            print(f"\n结果已保存到: {output_file}")

        return unique_lines

    except FileNotFoundError:
        print(f"错误: 找不到文件 '{file_path}'")
        return set()
    except Exception as e:
        print(f"处理文件时出错: {e}")
        return set()


def main():
    """主函数"""
    # 示例用法
    input_file = "D:\\pycharmProject\\pythonProject\\url.txt"  # 修改为你的输入文件名
    output_file = "D:\\pycharmProject\\pythonProject\\url_output.txt"  # 可选：输出文件名

    print("文本去重程序")
    print("=" * 50)

    # 处理文件
    unique_set = process_text_file(input_file, output_file)

    # 也可以不保存到文件，只获取集合
    # unique_set = process_text_file(input_file)

    print(f"\n最终集合包含 {len(unique_set)} 个唯一字符串")




if __name__ == "__main__":
    # 取消下面这行的注释来创建示例文件
    # create_sample_file("sample.txt")

    main()